Sequence Selection and Target Planning
Sequence and target planning automation within SOLIS is detailed below:
After connecting to SOLIS, you are able to automate functionality from the Mission Sequence Definition page.
Selecting Sequences
The following exemplifies how to automate parameters on the sequence selection page.
Windows PowerShell
Get SequenceSelection and Add Sequence
$seq = $sat.SequenceSelection # Get SequenceSelection object
$seq.AddSequence("CommOff", 1, 0, ("stringArg", "17", "5")) # Add sequence "CommOff" to execute at 0 seconds from the mission elapsed time
$seq.AddSequence("TargetPlan", 0, 30) # Add sequence "TargetPlan" to execute after 30 seconds after "CommOff" with no arguments
$seq.AddSequence("CommOn", 0, 100, ("3")) # Add sequence "CommOn" to execute after 100 seconds after "TargetPlan" with one argument
Get Execution List and Modify a Sequence
$el = $seq.GetExecutionList() # Get the list of Sequences in the Execution List
$s2 = $el[2] # Get the "CommOn" Sequence in the Execution List
$s2.DelayFromPrevious = 50 # Modify the Sequence's "delay from previous" time to 50 seconds
Remove Sequence and Clear Execution List
$seq.RemoveSequence() # Remove last sequence in execution list
$seq.RemoveSequence(0) # Remove first sequence in execution list
$seq.ClearExecutionList() # Clear execution list (and remove last sequence in list)
Python
Get SequenceSelection and Add Sequence
Get Execution List and Modify a Sequence
Remove Sequence and Clear Execution List
C#
Get SequenceSelection and Add Sequence
Get Execution List and Modify a Sequence
Remove Sequence and Clear Execution List
Matlab
Get SequenceSelection and Add Sequence
Get Execution List and Modify a Sequence
Remove Sequence and Clear Execution List
Target Planning
You also have the ability to automate parameters from the target planner page.
Windows PowerShell
Get and Update a Target Planner
$tp = $sat.TargetPlanner # Get Target Planner object
$tp.SlewModes # Show slew modes
$tp.SelectedSlewMode = $tp.SlewModes[0] # Pick "EigenSlew" for Slew Mode
$tp.SelectedDestinationMode = "NadirTrack" # Pick NadirTrack for Destination Mode
$tp.BtwnTgtMinDwell = 998 # Minimum time before switching to "Between Dwell Mode"
$tc = $tp.GetTargetingConfiguration("Scan") # Get Targeting Configuration called "Scan"
$tc.SelectedSatSensorConstraints = $null # Apply constraints from Satellite to Target
$tc.SatSensorConstraints # Hold on, what options do we have for this?
$tc.SelectedSatSensorConstraints = "AtlasPayload" # Never mind, let's do AtlasPayload
$targets = $tp.GetTargets((1, 4, 2, 6, 8, 7)) # Get Targets SE1, SS1, SE2, SS3, Tgt2, Tgt1 (in that order)
$tc.TargetConstraintType = "Target" # Set Target Constraint type to 'Target'
$tc.TargetConstraintSource = $targets[5].TargetName # Set Target Constraints to 'Tgt1'
$tp.UseSOLISTimes = $false # Change Solis Times to false
$tp.StartTime = "2/5/2016 2:25:01 PM" # Change start time for Target Planner
$tc.TypeOptions.Distance = 30 # Change Target Configuration Scan distance to 30km
$target = $tp.GetTarget("SS3") # Get Target "SS3"
$sc = $target.GetScanOptions("Custom_LLA") # Grab Scan Options object and change its End Target Type to Custom LLA
$sc.EndPointLatitude = 45 # Change end point latitude for SS3 to 45 degrees
$sc = $sc.SetEndTargetType("Default") # Actually, using default scan is fine
# (this gets the "updated" version of the ScanOptions object in case you change your mind later)
Python
Get and Update a Target Planner
C#
Get and Update a Target Planner
MATLAB
Get and Update a Target Planner
tp = STK.SOL_Satellite.TargetPlanner; %Get Target Planner object
StringArray2CellArray(tp.SlewModes()) %Show Slew Modes
tp.SelectedSlewMode = tp.SlewModes(1); %Pick 'Eigen Slew' for Slew Mode
tp.SelectedDestinationMode = 'NadirTrack'; %Pick NadirTrack for Between Mode
tp.SelectedClockingOption = 'FrameFixed'; %Pick FrameFixed for Between Clocking
tp.BtwnTgtMinDwell = 998; %Minimum time before switching to "Between Dwell Mode"
tc = tp.GetTargetingConfiguration('Scan'); %Get Targeting Configuration called "Scan"
tc.SelectedSatSensorConstraints = []; %Apply constraints from Satellite to Nothing
StringArray2CellArray(tc.SatSensorConstraints()) %Check what the constraint options are
tc.SelectedSatSensorConstraints = 'AtlasPayload'; %Set constraints form AtlasPayload instead of Nothing
targets = tp.GetTargets([1, 4, 2, 6, 8, 7]); %Get Targets SE1, SS1, SE2, SS3, Tgt2, Tgt1 (in that order)
tc.TargetConstraintType = 'Target'; %Change Constraint Type from Line-of-Sight to Target
tc.TargetConstraintSource = targets(5).TargetName; %Select Target 'Tgt1' for Target Constraint Source. All Targets will duplicate this constrain type
tc.ConfigurationName = 'Alt_Scan'; %Rename 'Scan' to 'Alt_Scan'
tp.UseSOLISTimes = false; %Change Use SOLIS Times to false
tp.StartTime = '2/5/2016 2:25:01 PM'; %Change Start Time for Target Planner
tc.TypeOptions.Distance = 30; %Change Target Configuration Scan Distance to 30km
target = tp.GetTarget('SS3'); %Get Target 'SS3'
scan = target.GetScanOptions('Custom_LLA'); % Grab Scan Options object and change its End Target Type to Custom LLA
scan.EndPointLatitude = 45; %Change end point latitude for SS3 to 45 degrees');
tp.GenerateSequence('C:\Users\<userName>\Desktop\TestSequence.seq'); %Generate a Target Plan Sequence called TestSequence.seq